package com.yf.exam.modules.user.cert.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yf.exam.modules.user.cert.dto.UserCertDetailDTO;
import com.yf.exam.modules.user.cert.dto.request.UserCertReqDTO;
import com.yf.exam.modules.user.cert.entity.UserCert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 用户证书记录Mapper
 */
@Mapper
public interface UserCertMapper extends BaseMapper<UserCert> {

    /**
     * 根据用户ID查询证书列表
     */
    @Select("SELECT * FROM el_user_cert WHERE user_id = #{userId} ORDER BY create_time DESC")
    List<UserCert> selectByUserId(String userId);



    /**
     * 统一的用户证书详情查询方法
     * 支持多种查询条件的组合
     */
    List<UserCertDetailDTO> selectUserCertDetail(@Param("userId") String userId, 
                                                @Param("examId") String examId,
                                                @Param("certId") String certId,
                                                @Param("status") Integer status,
                                                @Param("userName") String userName,
                                                @Param("examTitle") String examTitle,
                                                @Param("certTitle") String certTitle);

    /**
     * 分页查询用户证书详情（包含关联信息）
     * 保留兼容性
     */
    IPage<UserCertDetailDTO> selectUserCertDetailPage(Page<UserCertDetailDTO> page, @Param("params") UserCertReqDTO params);

    /**
     * 查询用户证书详情列表（包含关联信息）
     * 保留兼容性
     */
    List<UserCertDetailDTO> selectUserCertDetailList(@Param("userId") String userId, @Param("examId") String examId);
}